package com.data.modules.system.model;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author xiayuanpeng
 * @since 2022/3/15
 */
@Data
@Accessors(chain = true)
public class CommitDingTalkApplyParam {
    /**
     *应用标识。可在开发者后台的应用详情页获取。
     */
    private Integer agent_id;

    /**
     *审批流的唯一码。
     * process_code在审批模板编辑页面的URL中获取。
     */
    private String process_code;

    /**
     *审批实例发起人的userid。
     */
    private String originator_user_id;

    /**
     * 发起人所在的部门，如果发起人属于根部门，传-1。
     */
    private Integer dept_id;

    /**
     *审批人列表，最大列表长度20。
     *支持会签/或签，优先级高于approvers变量。
     * task_action_type  String  非必填  审批类型：会签：AND  或签：OR  单人：NONE
     * user_ids         String[]  非必填  审批人userid列表： 会签/或签列表长度必须大于1   非会签/或签列表长度只能为1 最大列表长度20
     */
    private JSONArray  approvers_v2;

    /**
     *抄送人userid列表，最大列表长度20。
     */
    private String cc_list;

    /**
     * 在什么节点抄送给抄送人：
     * START
     * FINISH
     * START_FINISH
     */
    private String cc_position;
    /**
     * 审批流表单参数，最大列表长度20。
     * 仅支持下表列举的表单控件。
     * name String 必填  表单每一栏的名称。
     * value String 必填  表单每一栏的值
     * ext_value String  非必填 扩展值（ps：请假天数） 扩展值
     */
    private JSONArray form_component_values;


    /**
     * 添加审批人
     *
     * @param task_action_type   节点审批方式：OR-或签；AND-会签，NONE-单人 仅在节点为多人审批时有效
     *               会签：指同一个审批节点设置多个人，如ABC三人，三人会同时收到审批，需全部同意之后，审批才可到下一审批节点；
     *               或签：指同一个审批节点设置多个人，如ABC三人，三人会同时收到审批，只要其中任意一人审批即可到下一审批节点；
     * @param user_ids 审批节点审批人userid列表，若为多人会签、多人或签，需填写每个人的userid
     */
    public void addApprovers_v2(String task_action_type, String... user_ids) {
        JSONObject json = new JSONObject();
        json.put("task_action_type", task_action_type);
        json.put("user_ids", user_ids);
        this.approvers_v2.add(json);
    }
}
